package br.com.projeto.controller;

import java.io.IOException;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import br.com.projeto.Dao.DaoController;
import br.com.projeto.Dao.Implement.UsuarioImpl;
import br.com.projeto.entidades.Usuario;
import br.com.projeto.util.Redirecionamento;

@ManagedBean
@SessionScoped
public class UsuarioController implements DaoController{

	private Usuario usuario;
	private DataModel<Usuario> lista;
	
	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public DataModel<Usuario> getLista() {
		return lista;
	}

	public void setListaUsuario(DataModel<Usuario> lista) {
		this.lista = lista;
	}

	@Override
	public void adiciona(ActionEvent event) {
		UsuarioImpl ui = new UsuarioImpl();
		try {
			ui.adiciona(usuario);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	@Override
	public void atualiza(ActionEvent event) {
		UsuarioImpl ui = new UsuarioImpl();
		try {
			ui.atualiza(usuario);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	@Override
	public void exclui(ActionEvent event) {
		Usuario usuarioTemp = (Usuario)(lista.getRowData());
		UsuarioImpl ui = new UsuarioImpl();
		try {
			ui.exclui(usuarioTemp);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	@Override
	public DataModel<?> Lista(ActionEvent event) {

		try {
			List<Usuario> lista = new UsuarioImpl().listaConsulta();
			this.lista = new ListDataModel<Usuario>(lista);
			Redirecionamento.mapeamento("listaUsuario");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return lista;
	}

	@Override
	public void preparaAtualizar(ActionEvent event) {
		try {
			Redirecionamento.mapeamento("alteraUsuario");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		usuario = lista.getRowData();
		
	}

	@Override
	public void preparaAdicionar(ActionEvent event) {
		usuario = new Usuario();
		try {
			Redirecionamento.mapeamento("adicionaUsuario");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	
}
